Embodiments relate to adaptation of a bus bridge transfer protocol, and more specifically, to adaptation for handling transfer protocol tags.
Many data transfer protocols such as Peripheral Component Interconnect (PCI) or Open Coherent Accelerator Processor Interface (OpenCAPI) use tags to identify discrete transactions in a transaction layer. In OpenCAPI, for example, a 16-bit “tag” value is assigned to each command by an agent initiating a data transfer request on the protocol.
In known arrangements, an initiator agent communicates with a bridge using a tag based protocol such as PCI or OpenCAPI and on the other side of the bridge multiple target agents are connected which communicate with the bridge using the same tag based protocol. Each target controls a resource that the initiator needs to access, such as system memory or a processing unit. When the initiator starts a read or write to a target, it sends to the bridge an address and a unique tag to identify the transaction. The bridge determines from the address which target is being accessed and forwards the request along with the tag to that particular target. Targets will typically fulfill the requests in the order they arrive and ensure that order by maintaining a queue of requests. When the target completes a given request it will return a status packet back to the bridge, which then sends this back to the initiator. The status packet will contain the tag that came with the request so that the initiator knows the transaction completed. If the transaction was a read, the status packet may also contain the read data.